/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Servlets;

import DAO.FlujoDAO;
import DAO.exceptions.NonexistentEntityException;
import Exceptions.InvalidDateException;
import Facade.FacadeFactory;
import VO.ActividadVO;
import VO.FlujoVO;
import VO.ProyectoVO;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author David
 */
public class ServletCreateActivity extends HttpServlet {

    /**
     * Processes requests for both HTTP
     * <code>GET</code> and
     * <code>POST</code> methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        final int  INIT_PERCENT = 0; 
        String mensaje = "";
        String nombreFlujo = request.getParameter("nombreActividad");
        int idflujo = Integer.parseInt(request.getParameter("flujo"));
        FlujoVO flujo = null; 
        try {
            ProyectoVO proyectoVo = FacadeFactory.createFacade().showProject(App.Sesion.getIdproyecto());
            flujo = FacadeFactory.createFacade().showFlow(idflujo);
            flujo.setIdproyecto(proyectoVo);
        } catch (NonexistentEntityException ex) {
            Logger.getLogger(ServletCreateActivity.class.getName()).log(Level.SEVERE, null, ex);
        }
        String fechaString = request.getParameter("fechaActividad");
        SimpleDateFormat formatoDeFecha = new SimpleDateFormat("yyyy-MM-dd");
        Date fechaDate = null;
        try {            
           fechaDate = formatoDeFecha.parse(fechaString);
        } 
        catch (ParseException ex) {
           ex.printStackTrace();
        }
        ActividadVO actividadVo = new ActividadVO();
        actividadVo.setNombre(nombreFlujo);
        int duracion = Integer.parseInt(request.getParameter("duracion"));
        actividadVo.setDuracion(duracion);
        actividadVo.setPorcentaje(INIT_PERCENT);
        actividadVo.setIdflujo(flujo); 
        try {
         actividadVo.setFecha(fechaDate);
         if(actividadVo.getFecha().before(actividadVo.getIdflujo().getFecha())){
                    mensaje = "La fecha de la actividad no puede ser menor a la del inicio del flujo";
                    throw (new InvalidDateException());
                   
         }
          FacadeFactory.createFacade().createActivity(actividadVo);
          mensaje="Actividad creada exitosamente!";
        }catch(InvalidDateException ex) {
                ex.printStackTrace();
        }
        finally {
            response.sendRedirect("gerente_GestionProyecto.jsp?creado="+mensaje);
        }
        
        
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP
     * <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP
     * <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}
